xupnpd: Import r398 from packages and update to r399.
authorÁlvaro Fernández Rojas <[email protected]>
Tue, 10 Jun 2014 22:33:55 +0000 (00:33 +0200)
committerÁlvaro Fernández Rojas <[email protected]>
Tue, 10 Jun 2014 22:33:55 +0000 (00:33 +0200)
multimedia/xupnpd/Makefile [new file with mode: 0644]
multimedia/xupnpd/files/xupnpd.init [new file with mode: 0644]
multimedia/xupnpd/patches/100-default_config.patch [new file with mode: 0644]
multimedia/xupnpd/patches/101-root_dir_param.patch [new file with mode: 0644]

diff --git a/multimedia/xupnpd/Makefile b/multimedia/xupnpd/Makefile
new file mode 100644 (file)
index 0000000..2990929
--- /dev/null
@@ -0,0 +1,71 @@
+#
+# Copyright (C) 2013-2014 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=xupnpd
+PKG_REV:=399
+PKG_VERSION:=$(PKG_REV)
+PKG_RELEASE:=1
+
+PKG_SOURCE_PROTO:=svn
+PKG_SOURCE_VERSION:=$(PKG_REV)
+PKG_SOURCE_SUBDIR:=xupnpd-$(PKG_VERSION)
+PKG_SOURCE_URL:=http://tsdemuxer.googlecode.com/svn/trunk/xupnpd/src/
+PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
+PKG_MAINTAINER:=Álvaro Fernández Rojas <[email protected]>
+
+include $(INCLUDE_DIR)/package.mk
+
+LUA_FLAGS:=-llua
+
+define Build/Compile
+       (cd $(PKG_BUILD_DIR); $(TARGET_CC) -v $(LUA_FLAGS) $(TARGET_CFLAGS) -fno-exceptions -fno-rtti -DWITH_URANDOM $(TARGET_CPPFLAGS) $(TARGET_LDFLAGS) -lm -ldl -lcrypt -o xupnpd *.c *.cpp)
+endef
+
+define Package/xupnpd
+  SECTION:=multimedia
+  CATEGORY:=Multimedia
+  DEPENDS:=+liblua
+  TITLE:=eXtensible UPnP agent
+  URL:=http://xupnpd.org/
+endef
+
+define Package/xupnpd/conffiles
+/usr/share/xupnpd/xupnpd.lua
+/usr/share/xupnpd/config
+/usr/share/xupnpd/playlists
+endef
+
+define Package/xupnpd/description
+xupnpd - eXtensible UPnP agent
+This program is a light DLNA Media Server which provides ContentDirectory:1 service for sharing IPTV unicast streams over local area network (with udpxy for multicast to HTTP unicast conversion).
+The program shares UTF8-encoded M3U playlists with links over local area network as content of the directory.
+You can watch HDTV broadcasts (multicast or unicast) and listen Internet Radio in IP network without transcoding and PC.
+endef
+
+define Package/xupnpd/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/xupnpd $(1)/usr/bin
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/xupnpd.init $(1)/etc/init.d/xupnpd
+       $(INSTALL_DIR) $(1)/usr/share/xupnpd
+       $(CP) $(PKG_BUILD_DIR)/*.lua $(1)/usr/share/xupnpd
+       $(INSTALL_DIR) $(1)/usr/share/xupnpd/ui
+       $(CP) $(PKG_BUILD_DIR)/ui/* $(1)/usr/share/xupnpd/ui
+       $(INSTALL_DIR) $(1)/usr/share/xupnpd/www
+       $(CP) $(PKG_BUILD_DIR)/www/* $(1)/usr/share/xupnpd/www
+       $(INSTALL_DIR) $(1)/usr/share/xupnpd/playlists
+       $(INSTALL_DIR) $(1)/usr/share/xupnpd/plugins
+       $(CP) $(PKG_BUILD_DIR)/plugins/* $(1)/usr/share/xupnpd/plugins
+       $(INSTALL_DIR) $(1)/usr/share/xupnpd/config
+       $(INSTALL_DIR) $(1)/etc/xupnpd
+       (cd $(1)/etc/xupnpd; ln -s ../../usr/share/xupnpd/config ./; ln -s ../../usr/share/xupnpd/xupnpd.lua ./)
+       $(INSTALL_DIR) $(1)/usr/share/xupnpd/localmedia
+endef
+
+$(eval $(call BuildPackage,xupnpd))
diff --git a/multimedia/xupnpd/files/xupnpd.init b/multimedia/xupnpd/files/xupnpd.init
new file mode 100644 (file)
index 0000000..29c458a
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2013-2014 OpenWrt.org
+
+START=50
+USE_PROCD=1
+
+start_service() {
+       procd_open_instance
+
+       procd_set_param command /usr/bin/xupnpd
+       procd_append_param command -d /usr/share/xupnpd
+
+       procd_set_param respawn
+       procd_close_instance
+}
diff --git a/multimedia/xupnpd/patches/100-default_config.patch b/multimedia/xupnpd/patches/100-default_config.patch
new file mode 100644 (file)
index 0000000..89958c7
--- /dev/null
@@ -0,0 +1,15 @@
+--- a/xupnpd.lua
++++ b/xupnpd.lua
+@@ -1,10 +1,10 @@
+ cfg={}
+ -- multicast interface for SSDP exchange, 'eth0', 'br0', 'br-lan' for example
+-cfg.ssdp_interface='lo'
++cfg.ssdp_interface='br-lan'
+ -- 'cfg.ssdp_loop' enables multicast loop (if player and server in one host)
+-cfg.ssdp_loop=1
++cfg.ssdp_loop=0
+ -- SSDP announcement interval
+ cfg.ssdp_notify_interval=15
diff --git a/multimedia/xupnpd/patches/101-root_dir_param.patch b/multimedia/xupnpd/patches/101-root_dir_param.patch
new file mode 100644 (file)
index 0000000..68ea3e8
--- /dev/null
@@ -0,0 +1,83 @@
+--- a/main.cpp
++++ b/main.cpp
+@@ -4,11 +4,14 @@
+  * https://tsdemuxer.googlecode.com/svn/trunk/xupnpd
+  */
++#include <ctype.h>
+ #include <stdio.h>
+ #include <syslog.h>
+ #include <string.h>
+ #include <unistd.h>
+ #include <stdlib.h>
++#include <sys/stat.h>
++#include <sys/types.h>
+ #include "luacompat.h"
+ #include "luaxlib.h"
+ #include "luaxcore.h"
+@@ -16,35 +19,36 @@
+ int main(int argc,char** argv)
+ {
+-    const char* p=strrchr(argv[0],'/');
+-
+-    int rc;
+-
+-    if(p)
+-    {
+-        char location[512];
+-        int n=p-argv[0];
+-        if(n>=sizeof(location))
+-            n=sizeof(location)-1;
+-        strncpy(location,argv[0],n);
+-        location[n]=0;
+-
+-        rc=chdir(location);
+-
+-        argv[0]=(char*)p+1;
+-    }
+-
+-    const char* root=getenv("XUPNPDROOTDIR");
+-    if(root && *root)
+-        rc=chdir(root);
+-
+-    {
+-        FILE* fp=fopen("xupnpd.lua","r");
+-        if(fp)
+-            fclose(fp);
+-        else
+-            rc=chdir("/usr/share/xupnpd/");
+-    }
++      int c;
++      char *xupnpd_root = "/usr/share/xupnpd/";
++      struct stat s;
++
++      opterr = 0;
++      while ((c = getopt (argc, argv, "d:")) != -1) {
++              switch (c) {
++                      case 'd':
++                              xupnpd_root = optarg;
++                              break;
++                      case '?':
++                              if (optopt == 'd')
++                                      fprintf(stderr, "Option -%c requires an argument.\n", optopt);
++                              else if (isprint(optopt))
++                                      fprintf(stderr, "Unknown option \"-%c\".\n", optopt);
++                              else
++                                      fprintf(stderr, "Unknown option\n");
++                                      return 1;
++                      default:
++                              abort();
++              }
++      }
++
++      if(stat(xupnpd_root, &s) != -1 && S_ISDIR(s.st_mode)) {
++              c = chdir(xupnpd_root);
++      }
++      else {
++              fprintf(stderr, "Directory %s doesn't exist.\n", xupnpd_root);
++              return 1;
++      }
+     lua_State* L=lua_open();
+     if(L)